Přeskočit na hlavní obsah

Otázka č. 13 - Správa procesů

Správa procesů

Proces

  • Procesy patří mezi základní prostředky všech OS
  • Proces popisujeme z různých pohledů, které se navzájem doplňují

3 základní pohledy

Genetický

  • Proces je instancí programu
  • Program je nejčastěji reprezentován souborem, který obsahuje kód aplikace a její iniciální data( spustitelný soubor )

Dynamický

  • Proces je postupným vykonáváním instrukcí
  • Proces ovlivňuje a může být ovlivňován prostředky a okolím

Systémový pohled

  • Udržuje informace o užívaných prostředcích a jejich stavech

  • Důležitou vlastností procesu je jeho jednoznačná identifikace mezi všemi ostatními procesy

  • Proces z dynamického hlediska předpokládá změnu stavu, po provedení každé instrukce

  • Závislost budoucích stavů na stavu aktuálním je velmi vysoká

Kontext procesu

  • Souhrn stavů všech prostředků, které proces v danou chvíli využívá
  • Kontext se musí ukládat i obnovovat v rámci přepínání procesů při multitáskingu a to by trvalo až vteřiny o Řešení – Vyhražený prostředek

Vyhražený prostředek

  • Vytvořena iluze že prostředek je využíván výhradně jedním procesem
  • Je rozdělen a přidělován procesům
  • Není nutné ukládat a obnovovat jeho stav

Průběh života procesu

  • Proces začíná ve stavu Nový[N]
  • Končí ve stavu Zombie[Z]
  • Většinu života však proces stráví však ve dvou základních cyklech
  • Kratší obsahuje stavy Wait[W] ( proces čeká na procesor )
  • Running[R] kdy proces běží
  • 2 podstavy
    • RU a RK podle aktuální úrovně privilegovanosti
    • Delší cyklus navíc obsahuje stav Sleep[S] (proces čeká na externí událost)

New[N]

  • Proces si alokuje své paměťové regiony v LAP (je mu přidělena paměť)

  • Nový proces je vždy vytvářen v podstatě vždy vytvářen jako požadavek jiného procesu

  • Na popud jiného procesu

  • Na základě požadavku uživatele

  • Na základě požadavku OS

  • Rodičovský proces zavolá systémovou službu, po vytvoření nového dětského procesu rutiny této služby nový proces vytvoří

    1. Vytvoření záznamu v tabulce procesů
    1. Alokace logických prostředků, především paměti
  • Během celé této doby se proces nachází ve stavu New[N], ale v této chvíli není schopen běhu

  • Teprve po úplném vytvoření je proces přesunut do stavu Waiting[W] a tím začíná jeho samostatná existence

  • Oba procesy(rodič i dítě) jsou zcela nezávislé a nemají žádné zvláštní vztahy

Waiting[W]

  • Připravený přejít do stavu běžící Running[R]
  • Jsou zde procesy, které jsou připraveny na vykonání, ale musí čekat na procesor, který je v danou chvíli obsazen
  • Proto jsou procesy ve stavu waiting organizovány do jedinné fronty FIFO - tato fronta je prioritní(s předbíháním)

Běžící proces[ Running ]

  • V jednoprocesorovém systému existuje právě jeden běžící proces.
  • Běžící proces může běžet buď v režimu o neprivilegovaném( uživatelském ) o nebo privilegovaném( jádra )
  • Proces může opustit tento stav o dobrovolně (vzdá se procesoru a přechází do SLEEPINGu)- čeká na událost o Nedobrovolně - je-li mu odebrán

Zablokovaný proces[ SLEEPING ]

  • Proces se zde nachází pokud dobrovolně opustil procesor a čeká na systémovou událost

  • Mezi hlavní typy událostí patří:

  • Vstupní událost na vstupní periferii( pohyb myši, stisk klávesy, příchod paketu… )

  • Výstupní událost( zápis na disk, odeslání znaku na monitor )

  • Uvolnění fyzického/logického prostředku

  • Uvolnění synchronizačního prostředku

  • Při přechodu do stavu SLEEPING( zablokování procesu ) by měl proces využívat minimum dalších prostředků, protože by je zbytečně blokoval

  • Ve stavu sleeping se může nachzet více procesů čekajících na stejný vyhrazený prostředek

  • Pro jejich uvolňování existují 2 mechanisny

  • Fronta čekajících procesů - procesy čekající na prostředek jsou řazeny do fronty a po uvlonění prostředku je pouze první z nich( nejdéle čekající ) odblokován

  • Probuďte se a předbíhejte - probuzeny jsou všechny procesy a o tom který proces prostředek získá rozhoduje absolutní priorita

Proces Mátoha[ Zombie ]

  • Finální stádium procesu
  • Ze stavu zombie nevede cesta zpět a proces v něm zůstává až do svého úplného odstranění
  • Procesu jsou při přechodu do tohoto stavu odebrány všechny prostředky
  • 3 Příčiny
    • Vražda
      • Proces je ukončen jiným procesem( pouze běžícím )
      • Do stavu Zombie přechází ze stavu WAITING/SLEEPING
      • Uživatel smí zabíjet pouze své vlastní procesy
    • Sebevražda
      • běžící proces zavolá systémovou službu pro své ukončení( většinou exit )
      • je přesunut do stavu zombie z RUNNINGu
    • Smrtelný úraz
      • chyba v kódu

Vlákna(Threads)

  • Vlákna procházejí stejnými stavy jako procesy.
  • Voláním služby jádra lze vytvořit v procesu nové vlákno
  • Proces obsahuje
  • Hlavní vlákno
  • Může obsahovat vedlejší vlákna
  • Více vláken v jednom procesu se nazývá multithreading
  • jednotlivá vlákna mohou v rámci procesu vykonávat různé činnosti
  • Čtení, zapisování, zpracování dat
  • Vykreslování výstupu na obrazovce a síťovou komunikaci
  • Nebo stejnou činnost nad různými daty
  • U počítačů s více procesory nebo na vícejádrových procesorech mohou tyto činnosti probíhat současně (paralelně)
  • V případech jednojádrového procesoru
  • Kvaziparalelně (rychlým přepínáním mezi vlákny se vytváří zdání paralelismu
  • Obdobou procesů, sdílejí však datový region, což usnadňuje jejich vzájemné působení, protože mohou komunikovat prostřednictvím globálních statických proměnných
  • Hlavní nevýhoda - globální zablokování
  • Jestliže dojde v jenom z vláken k zablokování procesu, jsou pozastavena i ostatní vlákna procesu

Multitasking

  • Správa procesů
  • Více souběžně běžících v láken v jednom procesu
  • Efekt skutečného multitáskingu je při dostatečně rychlé výměně procesů( milisekundy ) iluze souběžného běhu více procesů i na jednoprocesorových strojích
  • Vlákna jednoho procesu sdílí paměťový prostor a další systémové prostředky
  • Sdílená paměť zjednodušuje komunikaci mezi vlákny

Kooperativní multitásking

  • Proces se dostane na procesor a uvolní jej až bude chtít (dobrovolně - kooperativně)
  • K výměně procesů dochází pouze ve službách jádra
  • Nevýhoda například když běžící proces vstoupí do nekonečné smyčky

Dispečer

  • Speciální rutina
  • Rozhoduje který proces bude obnoven – připuštěn na procesor

Idle proces

  • V situaci že neexistuje žádný proces, který by chtěl na procesor je zavolán Idle proces
  • Volá v nekonečném cyklu dispeřera, který vybírá procesy ke připuštění na procesor

Preemptivní multitásking

  • Zde o přidělování a výměně procesů na procesoru rozhoduje operační systém
  • Přidělování procesoru probíhá na základě priorit procesů

Časovač

  • V pravidelných intervalech(100X – 1000x /s) vyvolá přerušení aktuálně běžícího procesu

Prioritní fronta

  • Priorita v rozsahu [-20, 20]
  • Nižší číslo znamená vyšší priorita
  • U procesů se stejnou prioritou je funkce prioritní funkce stejná jako u klasické fronty FIFO
  • Při neshodě priorit procesů ve frontě předbíhají ty procesy, jejichž priorita je nižší.

Statická priorita (SP)

  • Je dána typem procesu a závažností
  • Stejná po celou dobu existence procesu

Dynamická priorita (DP)

  • Začíná na 0

  • S každým cyklem kdy zůstává ve frontě priorita roste (číslo se snižuje)

  • Výpočet celkové/aktuální priority AP = SP + DP Nulová je u procesů, které do fronty nově vstoupili Snižování priority je u běžícího procesu